package com.skt.domain.DTO.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.Min;
import javax.validation.constraints.Max;
import java.time.LocalDate;

/**
 * 商家查询租赁订单列表的请求参数
 *
 * 说明：
 * - 用于 GET /merchant/orders 接口。
 * - 仅支持按订单状态、租赁起止日期范围进行筛选。
 * - 分页参数由前端传入，后端校验范围。
 * - 所有字段均为可选，空值表示不作为查询条件。
 * - 数据隔离由服务层通过当前商家ID自动实现，此处不暴露 merchantId。
 */
@Data
public class MerchantOrderQueryRequest {

    @Schema(description = "订单状态：1-待支付，2-已支付，3-已发货，4-已取货，5-已归还，6-已取消", example = "2")
    private Integer status;

    @Schema(description = "租赁开始日期 ≥ 此值（含）", example = "2025-12-01")
    private LocalDate startDateFrom;

    @Schema(description = "租赁开始日期 ≤ 此值（含）", example = "2025-12-31")
    private LocalDate startDateTo;

    @Schema(description = "租赁结束日期 ≥ 此值（含）", example = "2025-12-01")
    private LocalDate endDateFrom;

    @Schema(description = "租赁结束日期 ≤ 此值（含）", example = "2025-12-31")
    private LocalDate endDateTo;

    @Schema(description = "当前页码（从1开始）", example = "1")
    @Min(value = 1, message = "页码必须 >= 1")
    private Integer pageNum = 1;

    @Schema(description = "每页条数（建议 1~100）", example = "10")
    @Min(value = 1, message = "每页条数不能小于1")
    @Max(value = 100, message = "每页条数不能超过100")
    private Integer pageSize = 10;
}